package com.employ.admin.service;

import com.employ.admin.entity.MenuDo;
import com.employ.admin.entity.Tree;
import com.employ.admin.mapper.MenuDoMapper;
import com.employ.admin.utils.BuildTree;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.lang.management.MemoryUsage;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
@Service
public class MenuDoService<T> {

    @Resource
    MenuDoMapper menuDoMapper;
    public List<Tree<MenuDo>> listMenuTree() {
        String idParam = "0";		                           // 自定义顶级结点
        List<Tree<MenuDo>> trees = new ArrayList<Tree<MenuDo>>();  // 存放结果
        List<MenuDo> menuDOs = menuDoMapper.findSysMenus();             // 取出数据

        List<Tree<MenuDo>> children = new ArrayList<Tree<MenuDo>>();  // 存放结果
        Tree<MenuDo> menuDo = new Tree<MenuDo>();
        // 1. 初步处理：让原始数据具备我们自定的的tree的特征
        for (MenuDo sysMenuDO : menuDOs) {
            Tree<MenuDo> tree = new Tree<MenuDo>();
            tree.setId(sysMenuDO.getMenuId().toString());
            tree.setParentId(sysMenuDO.getParentId().toString());
            tree.setName(sysMenuDO.getName());
            Map<String, Object> attributes = new HashMap<>(16);
            attributes.put("path", sysMenuDO.getPath());
            attributes.put("icon", sysMenuDO.getIcon());

            menuDo.setId("10");
            menuDo.setName("用户列表");
            menuDo.setChecked(true);
            children.add(menuDo);

            tree.setChildren(children);

            tree.setAttributes(attributes);
            trees.add(tree);
        }

        // 2. 递归处理：根据数据库实际情况调整顶级结点的parentId值，默认为0
        List<Tree<T>> list = BuildTree.buildList(trees, idParam);

        return (List<Tree<MenuDo>>)trees;
    }


}
